perm filename GZ[KID,KMC] blob
sn#122908 filedate 1974-11-15 generic text, type T, neo UTF8
TITLE GZ
;THIS IS A PROGRAM TO FACILITATE THE HEARING OF SOUND FILES.
;A FILE NAME IS ACCUMULTED LETTER BY LETTER.
;IF THE FILE NAME (WITHOUT EXTENSION) IS TERMINATED BY
; 1) CR THEN THE FILE IS PLAYED ONCE
; 2) + THEN THE FILE IS PLAYED FIVE TIMES
; 3) . THEN THE FILE IS INTERPRETED AS A FILE OF NAMES
EXTERNAL MAINLP, DPINIT, PDPGET, CLEAR, SHOW, AIVECT, CHINIT
EXTERNAL LV2, KILL, TYOPTR, TIKCNT, DDRREL, DMDDIR, SPEAK
INTERNAL DOTHNG, GAMNAM, DIRECT, GAMENO;
X1←6
X2 ← X1+1
X3 ← X2+1
X4 ← X3+1
X5 ← X4+1
X6 ← X5+1
P←17
A←13 ;SAME AS X6
B←14
C←15
GAMNAM: 0 ;NO DPY FILE REQUIRED.
GAMENO: 0
DIRECT: BLOCK 2 ;ALLOW FOR NO ENTRIES.
DOTHNG: ;POSSIBILITY OF INITIALISATION
CAIN X1,015 ;TEST FOR CRLF
JRST ACTCR
CAIN X1,056 ;TEST FOR PERIOD
JRST ACTPER
CAIN X1,053 ;TEST FOR PLUS
JRST ACTPLS
CAIN X1,054 ;TEST FOR COMMA
JRST ACTCOM
CAIN X1,073 ;TEST FOR SEMICOLON
JRST ACTSMC
CAILE X1,132
JRST MAINLP ;REJECT CHARS ABOVE ALPHABET
CAIGE X1,060
JRST MAINLP ;REJECT CHARS BELOW DIGITS
SUBI X1,040 ;RECODE TO SIXBIT
MOVE X2,LCWACC ;THE FLAG 'LAST CHAR WAS A CTRL CHAR'
JUMPN X2,ADDIN ;DONT JUMP IF WE MUST CLEAR.
SETZM FILNAM
ADDIN: MOVE X2,FILNAM ;GET THE PARTIAL FILE NAME
LSH X2,6 ;MOVE IT 1 CHARACTER OVER
OR X2,X1 ;OR IN THE NEW CHARACTER.
MOVEM X2,FILNAM
SETOM LCWACC ;INDICATE LAST CHAR NOT A CTRL CHAR.
PUSHJ P,FILSHO
JRST MAINLP
ACTCR: PUSHJ P,SHNAME ;LEFT JUSTIFY NAME
SETZM LCWACC
PUSHJ P,PLYFIL
PUSHJ P,FILSHO
JRST MAINLP
ACTPLS: PUSHJ P,SHNAME ;LEFT JUSTIFY NAME
SETZM LCWACC
PUSHJ P,PLYFIL
PUSHJ P,PLYFIL
PUSHJ P,PLYFIL
PUSHJ P,PLYFIL
PUSHJ P,PLYFIL
PUSHJ P,FILSHO
JRST MAINLP
ACTPER: JRST MAINLP
ACTSMC: JRST MAINLP
ACTCOM: JRST MAINLP
SHNAME: MOVE A,FILNAM
JUMPE A,SHNX
LSH A,6
LSH A,-6 ;ERASE THE TOP CHAR
CAME A,FILNAM ;SKIP IF NO CHANGE
JRST SHNX
LSH A,6 ;MOVE THE WORD ALONG
MOVEM A,FILNAM
JRST SHNAME
SHNX: POPJ P,
PLYFIL: MOVE A,FILNAM
JUMPE A,PLYX
PUSHJ P,DMDDIR
JUMPN A,PLYX
PUSHJ P,SPEAK
PLYX: POPJ P,
FILSHO: PUSHJ P,CLEAR
MOVEI A,-=500
MOVEI B,0
PUSHJ P,AIVECT ;AIVECT(-500,0)
MOVEI A,0
MOVEI B,0
MOVEI C,46
MOVEI 0,7
DPB 0,[POINT 3,C,27]
PUSHJ P,LV2 ;GVECT(0,0,46,7,0)
MOVEI A,7
MOVEI B,=1000
MOVEI C,-=500
PUSHJ P,CHINIT ;CHINIT(7,1000,-500)
MOVEI X1,5 ;LOOP OVER SIX CHARACTERS.
MOVE X2,FILNAM
NAMLP: ROT X2,6
MOVEI X3,77
AND X3,X2 ;GET THE NEXT CHAR.
ADDI X3,040 ;CONVERT TO ASCII
IDPB X3,TYOPTR
SOSL X1
JRST NAMLP
MOVEI A,1
PUSHJ P,SHOW
POPJ P,
FILNAM: 0
LCWACC: 0
END